package Homework;

import Practice0915.FilPress;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class UseImp implements IUse{
    /*
1、定义静态商品集合，在静态块中完成初始元素的添加 /
2、提供添加方法，参数为商品对象，完成商品的添加/
3、提供查找全部商品的方法，返回全部商品的集合。/
4、提供按商品名模糊查询的方法（比如：输入“机”，电视机和豆浆机都满足），参数为商品名字符串，返回符合条件的商品集合。/
5、提供按编号查询商品方法，参数为编号，返回商品对象
6、提供按编号删除商品方法，参数为编号，完成商品的删除
7、提供修改商品价格的方法，参数为编号，新价格。完成指定编号商品价格的修改。
8、提供排序方法，参数为排序列名称（只能传单价和生产日期），完成集合的排序（降序）。
     */
    private static Commodity[] comArray = new Commodity[10];
    private static List<Commodity> list = FilPress.getList();


    @Override
    public void add(Commodity c) {
        list.add(c);
        FilPress.writer();
    }

    @Override
    public List<Commodity> show() {
        return list;
    }

    @Override
    public List<Commodity> vSearch(String keyWord) {
        List<Commodity> l = new ArrayList<Commodity>();
        for (Commodity c:list){
            if (c.getName().contains(keyWord)){
                l.add(c);
            }
        }
        return l;
    }

    @Override
    public Commodity codeSearch(int code) {
        int index = list.indexOf(new Commodity(code));
        if (index!=-1){
            return list.get(index);
        }
        return null;
    }

    @Override
    public List<Commodity> delete(int code) {
        list.remove(this.codeSearch(code));
        FilPress.writer();
        return list;
    }

    @Override
    public void updatePrice(int code, String newPrice) {
        int index = list.indexOf(new Commodity(code));
        if (index>-1) {
            Commodity commodity = list.get(index);
            commodity.setPrice(newPrice);
            FilPress.writer();
        }
    }

    @Override
    public void rank(String rankName) {
        if ("单价".equals(rankName)){
            list.sort(new Comparator<Commodity>() {
                @Override
                public int compare(Commodity o1, Commodity o2) {
                    return Integer.parseInt(o2.getPrice())-Integer.parseInt(o1.getPrice());
                }
            });
        }

        if ("日期".equals(rankName)){
            list.sort(new Comparator<Commodity>() {
                @Override
                public int compare(Commodity o1, Commodity o2) {
                    return o2.getDate().compareTo(o1.getDate());
                }
            });
        }
    }


}
